home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / MacApp Documentation / MacApp AppleLink Messages / MacApp.Tech$ Apr 89 / T0007-MPW 3.0 Pascal Bug-Apr89 < prev    next >
Encoding:
Text File  |  1989-04-12  |  1.9 KB  |  45 lines  |  [TEXT/GEOL]

  1. Item    5768606                         11-April-89        16:39
  2.  
  3. From:   ROLLIN1                         Rollin, Keith A.
  4.  
  5. To:     MACAPP.TECH$                    MACAPP Tech
  6.  
  7. Sub:    MPW 3.0 Pascal Bug
  8.  
  9. To: All MacApper's
  10.  
  11. Pascal Bug update:
  12.  
  13. We've recently identified a new bug in the MPW 3.0 Pascal compiler. I am
  14. posting it to MacApp.Tech$ because it is a bug that will especially affect
  15. Object Pascal programmers.
  16.  
  17. Under the right circumstances, an internal temporary reference to the current
  18. object will be lost, and valid access to your temporary variables will be lost.
  19. These circumstances occur when you are using objects compiled with the MC68881
  20. option and you call a procedure between the time you store some values into
  21. your instance variables and the time you access them later. Roberts Penland and
  22. Castillo noticed this under several circumstances, specifically this one:
  23.  
  24.     fStart:=((12500000.0/4096.0)*224.0)/(128.0*1024.0);
  25.     fStop:=((12500000.0/4096.0)*448.0)/1024.0;
  26.     fLogStart:=Log2(((12500000.0/4096.0)*224.0)/(128.0*1024.0));
  27.     writeln('start =',fStart,'stop =',fStop,'logstart =',fLogStart);
  28.  
  29. In this case, Real values are generated and stored into fStart, fStop, and
  30. fLogStart, which are instance variables for the object we are in. When Pascal
  31. generates the code to store the values into the object, it dereferences the
  32. object handle stored in A4 and puts the pointer into A0. This pointer in A0 is
  33. used to store and retrieve the instance variable values. Later, when the
  34. writeln is executed, A0 is trashed before the values of fStart, fStop, and
  35. fLogStart can be retrieved. This causes the incorrect values to be retrieved.
  36.  
  37. The cause of this bug has been identified, and will be fixed in the next
  38. release of MPW. In the meantime, either test your code in non-68881 mode, or
  39. store your instance variables in temporary locals if you need them across
  40. procedure calls.
  41.  
  42. - Keith Rollin
  43. - Apple Developer Technical Support
  44.  
  45.